﻿using System;
using System.Collections.Generic;

namespace Pap.Data
{
    /// <summary>
    /// 
    /// </summary>
    public interface IwfStep : IEntity
    {
        /// <summary>
        /// Gets or sets the step ID.
        /// </summary>
        /// <value>
        /// The step ID.
        /// </value>
        Guid StepID { get; set; }

        /// <summary>
        /// Gets or sets the process ID.
        /// </summary>
        /// <value>
        /// The process ID.
        /// </value>
        Guid ProcessID { get; set; }

        /// <summary>
        /// Gets or sets the name of the step.
        /// </summary>
        /// <value>
        /// The name of the step.
        /// </value>
        string StepName { get; set; }

        /// <summary>
        /// Gets or sets the display name.
        /// </summary>
        /// <value>
        /// The display name.
        /// </value>
        string DisplayName { get; set; }

        /// <summary>
        /// Gets or sets the description.
        /// </summary>
        /// <value>
        /// The description.
        /// </value>
        string Description { get; set; }

        /// <summary>
        /// Gets or sets the overdue after.
        /// </summary>
        /// <value>
        /// The overdue after.
        /// </value>
        int OverdueAfter { get; set; }

        /// <summary>
        /// Gets or sets the expire after.
        /// </summary>
        /// <value>
        /// The expire after.
        /// </value>
        int ExpireAfter { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether this instance is first step.
        /// </summary>
        /// <value>
        /// 	<c>true</c> if this instance is first step; otherwise, <c>false</c>.
        /// </value>
        bool IsFirstStep { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether this instance is last step.
        /// </summary>
        /// <value>
        /// 	<c>true</c> if this instance is last step; otherwise, <c>false</c>.
        /// </value>
        bool IsLastStep { get; set; }

        /// <summary>
        /// Gets the wf actions.
        /// </summary>
        IEnumerable<IwfAction> wfActions { get; }
        /// <summary>
        /// Gets the wf step roles.
        /// </summary>
        IEnumerable<IwfStepRole> wfStepRoles { get; }
        /// <summary>
        /// Gets the wf step permissions.
        /// </summary>
        IEnumerable<IPermission> wfStepPermissions { get; }

    }
}
